optimization - Sqlite subselect 比 distinct + order by 快得多
全部标签 我有一个这样的表结构:TABLENAME:counterid|datetime|url|ip-------------------------------------------1|2013-04-1213:27:09|url1|ip012|2013-04-1310:55:43|url2|ip023|2013-04-1411:14:12|url1|ip034|2013-04-1523:23:55|url2|ip045|2013-05-0208:34:44|url1|ip03通过智能SELECT查询,我想获取3列:DistinctURL|countofip|countofdistinct
我有一个包含超过10,000,000行的数据库。现在查询它可能需要几秒钟才能找到一些基本信息。这不是可取的,我知道最好的优化方法是尽可能减少行数,但现在我没有时间这样做。优化MySQL的最简单方法是什么?数据库以便在查询时花费的时间很短?我不介意数据库的大小,这并不重要,所以任何增加大小的优化都可以。我不太擅长优化,现在我已经设置了索引,但我不确定我能从那里得到多少。我最终会适本地缩减数据库,但是有没有快速的临时解决方案? 最佳答案 除了已经建议的索引之外,如果它们很大,您可能还需要查看分区表。PartitioninginMySQL
我有一个表,其中a、b和c通常相同。我有一个查询,可以为我提供每条唯一记录。我正在尝试计算返回的每个不同记录的重复记录数。SELECTDISTINCTa,b,c,COUNT(id)ascountedFROMtable此处的COUNT返回所有记录的计数。我正在寻找的是与唯一记录相同的记录数。 最佳答案 SELECTa,b,c,COUNT(*)FROMtableGROUPBYa,b,c 关于mysql-获取DISTINCT查询产生的重复行数,我们在StackOverflow上找到一个类似的问
可以在单个选择查询中使用两次“Distinct”关键字吗?像明智的:selectDISTINCT(trackid),DISTINCT(table_name)fromjos_audittrailwherelive=0ANDoperation=UPDATE谢谢 最佳答案 不,默认情况下Distinct适用于您选择的所有列。例如。selectDISTINCTtrackid,table_namefromjos_audittrailwherelive=0ANDoperation=UPDATE这将选择所有不同的trackid和表名组合编辑要检索
在我的数据库中,我有很多非常相似但不完全相同的条目。例如,只有两个字符可能不同,例如:Row1:“天气不错,看http://xyz56.com”Row2:“天气不错,看http://xyz31.com”我想去掉这些部分重复项,只收到这两行的一个结果。不管是哪一个,我建议使用出现的第一个。我可以利用MySQL的任何功能来高效地完成这项工作吗?我的第一个想法是提取更多数据并对字符串进行比较,如果匹配字符超过某个阈值而不是忽略它。缺点是我永远不知道我必须从数据库中提取多少条目,而且它的效率也很低,因为我必须将每一行与所有其他行进行比较(O(n²))。更新:更具体地说明用例:变化的位置并不总是
我需要做什么才能将此查询转换为在SQLServer中工作?SELECTDISTINCT(map_objetivos.OBJ_RowID)AStest,map_objetivos.OBJ_ObjetivoFROMmap_admin_caminho_critico_indicadoresINNERJOINmap_admin_caminho_criticoONCCR_RowID=CCI_CaminhoDRINNERJOINmap_indicadoresONIND_RowID=CCI_IndicadorDRINNERJOINmap_objetivosONOBJ_RowID=IND_Objeti
我有一个mysql问题。我有两个这样的表需要连接在一起。表格:idotherid21|12|13|24|2表2:otheridotherid21|12|13|24|2我正在使用:SELECTid,otheridFROMtableINNERJOINtable2ONtable.otherid2=table2.otherid2这给了我:idotherid1|11|22|12|23|33|44|34|4如您所见,我得到了重复的id,因为表2中的otherid2不是唯一的。我需要的是以某种方式进行INNERJOINDISTINCT,我只希望结果如下所示。不重复。这就是我想要的:idotherid
我正在CakePHP中构建查询,但无法在我的find('count')中使用GROUPBY语句,因为它会引发错误。因此,我在字段列表中使用了DISTINCT字段来代替GROUPBY语句。所以,从find('count',array('group'=>'field'))我现在有find('count',array('fields'=>'不同的字段'))在应用程序的另一部分,我使用find('all')来获取与上面相同的记录。在这里,我可以使用GROUPBY语句,所以我有:find('all',array('group'=>'field'))我的问题是:上述两个查询是否返回相同的结果?简而
当我使用它时:SELECTDISTINCTidFROMtable这行得通!但是...当我只想过滤一列时,我会尝试这样做:SELECTDISTINCTprod_id,id,prod_pictureFROMproducts这给了我所有表格...我只需要为每个产品提供1张图片,例如:1|1|asd.jpg2|3|weq.jph不是1|1|asd.jpg1|2|qwe.jpg2|3|weq.jpg实际上我尝试使用这个:SELECTDISTINCTprod_list.id,prod_list.prodname,prod_pict.pict_fileFROMprod_listINNERJOINur
如何从中获得不同的title.id:SELECTTitle.id,Title.titleFROMtitlesasTitleHAVINGpoints>0UNIONALLSELECTTitle.id,Title.titleFROMtitlesasTitleHAVINGpoints>1查询还有更多内容,但这应该足以继续进行。 最佳答案 只需删除ALL。有些风格允许添加DISTINCT而不是ALL以更加明确,但这是多余的,因为默认总是过滤我们的重复项。MySQL-http://dev.mysql.com/doc/refman/5.0/en/